#ifndef INPUT_H_INCLUDED
#define INPUT_H_INCLUDED

#include "inputelement.h"
#include "inputiterator.h"
#include "../util/linkedlist/linkedlist.h"

//#define NDEBUG
#include <assert.h>
#include <fstream>
#include <iostream>
#include <cstdlib>


class Input {
    private:
        InputElement* elements;
        // InputElements (array of Elements containing the position and value information)
        unsigned int dimension;
        // amount of variable(s). Dimension of the position.
        unsigned int sizeOfElements;
        // amount of Elements contained in this input. (size of "elements")
    public:
        Input();
        // constructor
        void createPrimeInput(const unsigned int& amountOfPrimes);
        // creates a new input - primenumbers
        const unsigned int& getDimension();
        // return dimension
        const unsigned int& getSize();
        // returns sizeOfElements
        InputIterator& getNewIterator();
        // returns a new Iterator over elements
        bool importFromTextfile(const char* fileName);
        // imports data from a specified textfile
        ~Input();
        // destructor
};

#endif // INPUT_H_INCLUDED
